查看原文
其他

GIMMS NDVI数据处理-nc格式转tif

大NIU 地学分析与算法 2022-05-17

之前分享的GIMMS NDVI 3g v1数据集(链接),由于下载下来的是nc文件,部分同学可能不熟悉该数据格式,无法很好的使用该数据集,所以我们将其转换成了tif格式方便大家使用。后台有同学询问详细的转换过程和代码实现。授人以鱼不如授人以渔,今天做一分享---nc格式转换成tif格式,希望对大家有所帮助。整个过程包含样例文件制作和代码转换两部分。

01样例制作

从数据下载网站上下载一期数据(任意一个nc文件),查看其信息:

ncdisp('C:\Users\nc2tif\ndvi3g_geo_v1_1981_0712.nc4');

首先通过以下转换得到一个文本格式的样例数据:

data1=ncread('C:\Users\nc2tif\ndvi3g_geo_v1_1981_0712.nc4','ndvi');data2=data1(:,:,1);data3=rot90(data2);data4=flipud(data3);data5=double(data4)/10000;data5(data5<-0.3|data5>1)=-999;dlmwrite('样例.txt',data5,'\t',1,1);样例.txt:

然后在文本中添加经纬度信息,结果如下所示:

添加经纬度信息后,采用以下步骤得到样例栅格数据:

1. 利用arcgis的ASCII码转raster功能,将该文本转变为tif栅格文件;

2. 对样例文件定义投影。

(以上是针对GIMMS ndvi全球数据的样例制作,可后台回复“样例”直接获取一个样例文件,不过建议自己尝试处理)


02代码转换
[~,R]=geotiffread('J:\全球性数据集\NDVI3g\example.tif');info=geotiffinfo('J:\全球性数据集\NDVI3g\example.tif');i=1;k=[1:12];m=1;year=[1982 1982 1983 1983 1984 1984 1985 1985 1986 1986 1987 1987 1988 1988 1989 1989 1990 1990 1991 1991 1992 1992 1993 1993 1994 1994 1995 1995 1996 1996 1997 1997 1998 1998 1999 1999 2000 2000 2001 2001 2002 2002 2003 2003 2004 2004 2005 2005 2006 2006 2007 2007 2008 2008 2009 2009 2010 2010 2011 2011 2012 2012 2013 2013 2014 2014 2015 2015];format='monthNDVI3g.tif';montha=[1:6];monthb=[7:12];e=dir(fullfile('J:\全球性数据集\NDVI3g','*nc4'));while i<=length(e) a=ncread(e(i).name,'ndvi'); while m<=length(k) j= m+1; h=j/2; b1=max(a(:,:,k(j)),a(:,:,k(m))); b=flipud(rot90(b1)); m=m+2; if mod(i,2)==0 g=monthb; else g=montha; end name1=strcat(int2str(year(i)),int2str(g(h)),format); geotiffwrite(name1,b,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag); end m=m-12; i=i+1;end

以上过程批量将nc格式的数据转换成了旬尺度tif栅格,但NDVI值还存在一个比例变换(除以10000),另外还需月最大值合成,背景剔除,负值归零。


说说线性规划

泰勒图的MATLAB实现

深度学习--卷积神经网络基础

Python爬取高德地图--瓦片图

全球植被年内逐月动态变化GIF

ArcPy批量定义投影和批量投影转换

机器人局部规划算法--DWA算法原理

ArcGIS时间滑块实现车辆轨迹动态展示

GPS数据处理---在野外采样寻点中的应用

数据分享GIMMS NDVI 3gv1(1982-2015)

Python散点图矩阵示例--以空气质量数据为例

更多精彩分享,敬请关注我们

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存